Throttling typically refers to controlling the amount of work processed in a system per some time period. For example, if data is being sent over a network, how fast that data is sent is throttled to avoid data loss or to allow other data to flow simultaneously. Throttling traditionally has been implemented by queuing up work units and processing them in the order they are received. This approach, however, doesn't reflect changes in available resources, such as where it is possible to concurrently process data, or reflect changes in priority.